package com.lv.service.room.company

import android.content.Context
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch

/**
 * 作者： ygx
 * 创建日期：2022/1/8 2:42 PM
 * 签名： 天行健，君子以自强不息；地势坤，君子以厚德载物。
 *      _              _           _     _   ____  _             _ _
 *     / \   _ __   __| |_ __ ___ (_) __| | / ___|| |_ _   _  __| (_) ___
 *    / _ \ | '_ \ / _` | '__/ _ \| |/ _` | \___ \| __| | | |/ _` | |/ _ \
 *   / ___ \| | | | (_| | | | (_) | | (_| |  ___) | |_| |_| | (_| | | (_) |
 *  /_/   \_\_| |_|\__,_|_|  \___/|_|\__,_| |____/ \__|\__,_|\__,_|_|\___/
 *
 * You never know what you can do until you try !
 * ----------------------------------------------------------------
 * cniao数据库操作帮助类
 */
object CompanyDraftDbHelper {

    /**
     * 获取room数据表中存储的userInfo
     * return liveData形式
     */
    fun getLiveFindCompany(context: Context, id: Int = 0) =
        CompanyDraftDatabase.getInstance(context).companyDao.queryLiveFindCompany(id)

    /**
     * 获取room数据表中存储的userInfo
     * return liveData形式
     */
    fun getLiveFindAllCompany(context: Context) =
        CompanyDraftDatabase.getInstance(context).companyDao.queryLiveFindAllCompany()

    /**
     * 以普通数据对象的形式，获取userInfo
     */
//    fun getFindCategory(context: Context, id: Int = 0) =
//        CompanyDraftDatabase.getInstance(context).companyDao.queryFindCategory(id)

    /**
     * 以普通数据对象的形式，获取userInfo
     */
//    fun getFindAllCategory(context: Context) =
//        CompanyDraftDatabase.getInstance(context).companyDao.queryFindAllCategory()

    /**
     * 以普通数据对象的形式，获取userInfo
     */
    suspend fun getFindCompanySuspend(context: Context) =
        CompanyDraftDatabase.getInstance(context).companyDao.getFindCompany()

    /**
     * 以普通数据对象的形式，获取userInfo
     */
    suspend fun getFindUserCompanySuspend(context: Context, userId: String) =
        CompanyDraftDatabase.getInstance(context).companyDao.getFindUserCompany(userId)

    /**
     * 获取room数据表中存储的userInfo
     * return liveData形式
     */
    fun getLiveFindUserCompany(context: Context, userId: String) =
        CompanyDraftDatabase.getInstance(context).companyDao.getLiveFindUserCompany(userId)

    /**
     * 获取room数据表中存储的userInfo
     * return liveData形式
     */
    fun getLiveFindUserSortCompany(context: Context, userId: String) =
        CompanyDraftDatabase.getInstance(context).companyDao.getLiveFindUserSortCompany(userId)

    /**
     * 以普通数据对象的形式，获取userInfo
     */
    suspend fun getFindAllCompanySuspend(context: Context) =
        CompanyDraftDatabase.getInstance(context).companyDao.getAllCompany()

    /**
     * 删除数据表中的userInfo信息
     */
    fun deleteFindCompany(context: Context) {
        GlobalScope.launch(Dispatchers.IO) {
            getFindCompanySuspend(context)?.let { info ->
                CompanyDraftDatabase.getInstance(context).companyDao.deleteFindCompany(info)
            }
        }
    }

    /**
     * 删除数据表中的userInfo信息
     */
    fun deleteFindCompany(context: Context, info: CompanyDraftItemBean) {
        GlobalScope.launch(Dispatchers.IO) {
//            getFindCompanySuspend(context)?.let { info ->
            CompanyDraftDatabase.getInstance(context).companyDao.deleteFindCompany(info)
        }
    }

    /**
     * 删除数据表中的所有userInfo信息
     */
    fun deleteAllCompany(context: Context) {
        GlobalScope.launch(Dispatchers.IO) {
            CompanyDraftDatabase.getInstance(context).companyDao.deleteAllCompany()
        }
    }

    /**
     * 以普通数据对象的形式，获取userInfo
     */
    suspend fun deleteSuspendAllCompany(context: Context) =
        CompanyDraftDatabase.getInstance(context).companyDao.deleteSuspendAllCompany()

    /**
     * 新增用户数据到数据表
     */
    fun insertFindCompany(context: Context, companyItemBean: CompanyDraftItemBean) {
        GlobalScope.launch(Dispatchers.IO) {
            CompanyDraftDatabase.getInstance(context).companyDao.insertFindCompany(companyItemBean)
        }
    }

    /**
     * 以普通数据对象的形式，获取userInfo
     */
    suspend fun insertFindSuspendCompany(context: Context, companyItemBean: CompanyDraftItemBean) =
        CompanyDraftDatabase.getInstance(context).companyDao.insertFindSuspendCompany(
            companyItemBean
        )

    /**
     * 以普通数据对象的形式，获取userInfo
     */
    suspend fun insertAllCompany(context: Context, companys: List<CompanyDraftItemBean>) =
        CompanyDraftDatabase.getInstance(context).companyDao.insertFindSuspendCompany(companys)

    /**
     * 更新用户数据到数据表
     */
    fun UpDataCompany(context: Context, companyItemBean: CompanyDraftItemBean) {
        GlobalScope.launch(Dispatchers.IO) {
            CompanyDraftDatabase.getInstance(context).companyDao.updateFindCompany(companyItemBean)
        }
    }
}